It is well known to utilize layers of communication protocol to transmit data between devices. It is not uncommon for a protocol tasked with transmitting data to do so by adding a header to the data to form a unit, and then passing that unit on to another protocol that is generally considered to be a lower level protocol. Adding a header to the unit provided by a higher-level protocol is often referred to as encapsulating the unit. As such, it is not uncommon to talk about layers of protocols wherein units formed by higher-level protocols are encapsulated within the data portions of lower level protocols. The unit formed by a given protocol layer will often be referred to by a name that may indicate some of the characteristics of the protocol that formed the unit and/or of the unit formed. Such names include, but are not limited to, “datagram”, “packet”, and “frame”.
A set of protocols adapted to cooperate with each other is often referred to as a suite. One common suite of protocols is the TCP/IP suite and includes, among others, the IP, TCP, and UDP protocols. The Internet Protocol (IP), defined by IETF RFC791, is the routing layer datagram service of the TCP/IP suite and is used by most of the other protocols within the suite to route frames from host to host. The IP header contains routing information and control information associated with datagram delivery. The User Datagram Protocol (UDP), defined by IETF RFC768, provides a simple, but unreliable message service for transaction-oriented services. Each UDP header carries both a source port identifier and destination port identifier, allowing high-level protocols to target specific applications and services among hosts. The Transmission Control Protocol (TCP), defined by IETF RFC793, provides a reliable stream delivery and virtual connection service to applications through the use of sequenced acknowledgment with retransmission of packets when necessary.